//require()函数迎来引入模块
// node的模块只需要编写模块名
// 会自动去node_modules文件夹中运行相关的文件


// express 是用来搭建服务器的模块
// npm install --save express
const express = require("express");
 // 引入bodyParser模块,在接收post请求前对服务器先进行配置
const bodyParser = require("body-parser");
// 解析form-data数据格式的模块   +
const multer = require("multer");

const fs = require("fs"); // +

// 传递的form-data中如果有文件信息;设置储存位置  +
const upload = multer({dest:"www/upload"});


// 生成一个服务器对象
const app = express();
// express.static("www") 获取一个文件夹的函数对象
// app.use();给app这个服务对象配置

// 配置静态目录
app.use(express.static("www"));
// 配置bodyParser 那么之后接收到的post请求的数据都会直接先被
// bodyParser解析urlencoded数据格式的数据
app.use(bodyParser.urlencoded({extended:false}))


// app.get() 用来接收处理get请求
// 参数1是请求名称 (请求路径)
// 参数2是回调函数 
// 会在监听到客户端向这个请求地址发送请求时执行
app.get("/getOne",function(req,res){
    console.log("接收到getone请求了");
    // 获取get请求传递过来的请求参数
    console.log(req.query);
    // res设置响应数据
    res.send("成功了");
})

// post()用来接收post请求
// node接收到的post请求的数据,不能直接读取
// 需要先进性解析
// 需要通过body-parser模块进行解析
// npm install --save body-parser
// single("myfile") 对单个文件进行处理(保存)  +
app.post("/postOne",upload.single("myfile"),function(req,res){

    // req.body 获取post请求传递过来的数据
    console.log("====");
    console.log(req.file); //获取文件对象  +
    console.log(req.body); //获取除了文件对象之外的其他属性  +


    // fs提供的可以更改文件名的方法  +
    var a = `www/upload/${req.file.filename}`;
    var b = `www/upload/${req.file.originalname}`;
    fs.rename(a,b,(err)=>{
        if(!err){
            console.log("文件名替换成功");
        }
    })
    

    res.send("post响应结束")
})


// 设置端口号
app.listen(3000,()=>{
    // 服务器运行成功后的回调函数
    console.log("http://localhost:3000");
})